Linux ケイパビリティ
Linuxのケイパビリティ(Capability)について
特権プロセスか非特権プロセスかという分け方は大雑把すぎるのでより細かく実行能力を分けるようにしたアクセス制御の仕組み
Linux 2.2以降でケイパビリティの仕組みができた
以下はケーパビリティの一部
CAP_CHOWN
ファイルの所有者(UID)とグループ(GID)を変更する能力
CAP_NET_BIND_SERVICE
1024未満(1023まで)のポートにバインドする能力
1023までは特権ポートと呼ばれる
CAP_KILL
他のプロセスを終了またはシグナル送信する能力
CAP_SYS_TIME
システム時刻の変更能力
CAP_NET_ADMIN
各種のネットワーク関係の操作能力
libcapライブラリがケイパビリティ変更のAPIを持っている
ケイパビリティに関するコマンド
setcap
バイナリやシェルスクリプトにケイパビリティを付与 / 削除
getcap
指定したファイルが持つケイパビリティ一覧を表示
capsh
code:sh
# 例: /usr/bin/ssh に CAP_NET_ADMIN と CAP_SYS_PTRACE を付与
sudo setcap 'cap_net_admin+ep' /usr/bin/ssh
code:sh
# 任意のファイルが持つケイパビリティを表示
# getcap <file>
$ getcap /usr/bin/ssh
/usr/bin/ssh cap_net_admin=ep
確認用
Q. ケイパビリティとは
参考
Capability · Container Security Book
capabilities(7) - Linux manual page
Man page of CAPABILITIES
ケイパビリティ - ArchWiki
Linux Kernel Capability(Linuxカーネルケーパビリティ)に関して(2020年版) – Part1
第42回Linuxカーネルのケーパビリティ[1]
関連
AppArmor
コマンドとかプロセスを実行する(システムコール系)
アクセス制御リスト(ACL)
コンテナでのセキュリティ
setuid
setgid
メモ
setcap(8) - Linux manual page
setcap(8) — Arch manual pages
HackTricks/linux-hardening/privilege-escalation/linux-capabilities.md at master · b4rdia/HackTricks
#Linux #セキュリティ